#pragma once
#include<iostream>
#include<vector>
#include<list>

namespace mystack{

    template<class T, class Container = std::vector<T>>
    class stack{
        private: 
        Container _st;
        public:
        void push(const T& val)
        {
            _st.push_back(val);
        }
        void pop()
        {
            _st.pop_back();
        }
        const T& top()
        {
            return _st.back();
        }
        bool empty()
        {
            return _st.empty();
        }
        size_t size()
        {
            return _st.size();
        }
        void swap(stack& val)
        {
            _st.swap(val._st);
        }
    };
}